/* Benchmarks for the PointerC verifier. */

// clear a list

struct list 
{
  int data;
  struct list* next;
};


void clearList(struct list * l)
{
  struct list * p;
  
  p=l;
  
  if (p==null)
  {
    return;
  }
  else
  {
    while(p!=null) /*@ (({p, l}) && list(l->next))
                     @ || ({p, l}N)
                     @*/  
    { l = l->next;
      free (p);
      p = l;
    }
    return;
 }

}
/*@ */

/*@*/  
void main()
{
  return;
}
/*@ */ 
